using System;
using System.Collections.Generic;
using System.Text;

using Yorrick.FlickrMetadataSynchr.Data;

namespace Yorrick.FlickrMetadataSynchr.Match
{
   /// <summary>
   /// Interface to 
   /// </summary>
   internal interface IMetadataMatcher
   {
      /// <summary>
      /// Sets the picture lists that should be used for matching.
      /// </summary>
      /// <param name="localList">A list of local pictures.</param>
      /// <param name="flickrList">A list of Flickr pictures.</param>
      void SetPictureLists(IList<LocalPictureMetadata> localList, IList<FlickrPictureMetadata> flickrList);

      /// <summary>
      /// Matches the pictures in the local set and the Flickr set based on datetime taken and
      /// returns a list of matched pictures.
      /// </summary>
      /// <returns>The list of matched pictures.</returns>
      IList<PicturePair> GetMatchedPictures();

      /// <summary>
      /// Returns a list of Flickr pictures that could not be matched with a local picture.
      /// </summary>
      /// <returns>The list of unmatched Flickr pictures.</returns>
      IList<FlickrPictureMetadata> GetUnmatchedFlickrPictures();

      /// <summary>
      /// Returns a list of local pictures that could not be matched with a Flickr picture.
      /// </summary>
      /// <returns>The list of unmatched local pictures.</returns>
      IList<LocalPictureMetadata> GetUnmatchedLocalPictures();
   }
}
